Conducting thorough testing of new hardware and software components is an essential step in developing and releasing products to market. To ensure that a particular component is compatible across as large of a user base as possible it needs to be tested with a wide variety of system configurations. However, maintaining such a large on-hand cache of various hardware and software components can prove to be a technically, financially, and administratively burdensome task. By reducing the number of actual hardware and software components to be maintained many advantages are realized, such as lower total lifecycle infrastructure costs and fewer required software licenses. Moreover, many environmental benefits can also be achieved, including hardware footprint reduction, power reduction, and reduced ambient cooling demands.
In the 1970's the concept of virtual machines was introduced in the VAX VMS environment. A virtual machine appears to be its own operating system running its own applications, but the virtual machine does not actually communicate with the hardware directly. Instead the virtual machine communicates to virtualized hardware and it is an underlying host operating system that actually handles the communication directly to the hardware. While virtual machine technology can be useful in testing software and hardware components and simulating an actual computer environment, virtual machine technology possesses some limitations which can hinder its use in software and hardware component testing. For example, the virtual machine will typically be constrained by the physical machine and hardware that the virtual machine is spooled up on. This can be particularly problematic, for instance, when a test scenario or multiple test scenarios may call for many different types of networking hardware infrastructures and configurations.
To date, traditional test strategies for testing client/server or network protocols have entailed setting up large lab configurations. Multiple processor architectures and platform skews are prevalent in today's typical test environments. Each of these test variants requires its own network setup. Network test configurations also require complex software to synchronize computers so that the test scenarios return accurate results. Further complicating matters, the hardware between the client and server can be faulty or interrupted (e.g., loss of power to the hub). Finally, with the increased prevalence of wireless networking technology, real world testing scenarios can require an even larger network topology that could potentially span the equivalent of several city blocks.
Accordingly, a need exists for a method or program that is able to dynamically create many types of virtual computers networked to a virtual network adapter, and, preferably can be implemented on both virtual and non-virtual machine platforms. The invention provides such an architecture. These and other advantages of the invention, as well as additional inventive features, will be apparent from the description of the invention provided herein.